{\rtf1\ansi\ansicpg1252\deff0\deflang2057{\fonttbl{\f0\fnil\fprq1\fcharset0 Arial;}{\f1\fnil\fcharset0 Calibri;}{\f2\fnil\fcharset2 Symbol;}}
{\colortbl ;\red255\green0\blue0;\red0\green0\blue255;\red247\green150\blue70;}
{\*\generator Msftedit 5.41.21.2509;}\viewkind4\uc1\pard\sa200\sl240\slmult1\qc\lang9\f0\fs28 Feature Considerations\par
\pard\sa200\sl240\slmult1\fs24 This document is aimed at setting out what feature ideas we have, how they compare with other front ends and how possible it will be for us to create them. It will then allow us to break down our goals into smaller, more manageable parts to work on. No idea set in here is definite unless stated as finalised and accepted. Any unlabelled idea is just that, so can be contested and discussed in regard to it's future within the project.\par
Any idea, however wild can be placed in here and should not be mocked or looked down upon for being stupid. All thoughts are worth consideration.\fs28\par
\pard\sa200\sl240\slmult1\qc\par
\pard\sl240\slmult1\b\fs24 Ideas\b0\par
\ul Interface\par
\ulnone\i Design\par
\i0 The only current requirement for the interface design is to "look damn nice". We should experiment where possible, to come up with something very user friendly. Unfortunately these tests can only be done once the project is at a usable stage.\par
\i\par
Implementation\ul\i0\par
\ulnone The interface is to be created using openGL. The advantage to this is that it will be cross platform, the disadvantage being that other parts of the project will not, so it really makes no difference.\par
\par
\ul Audio/Video\par
\ulnone Built on to of libVLC, the audio and video aspect should be able to handle almost any kind of file encoding. VLC is a good basis for this, however as a full solution is lacks any kind of user friendly playlist manager or interface to compete with the gayTunes album art scroller.\par
\par
\ul Navigation\par
\ulnone Finding an open source navigation package that does not use OpenStreetMap is looking less possible by the day. I have so far been unable to discover what Centrafuse are using. OSM is nice for looking at a free map but a lot of people are too dense to figure out that roads need to be properly connected, not just look like they are. As a result of this, just trying to generate a course from my house to the end of the road has been a nightmare. Using it for proper navigation is not really viable. Having said that, it may actually be our only option.\par
\par
Some commercial software is available, however as we are making a FOSS front end, this would be too much of a limitation. Perhaps we could look into using Sygic's demo libraries and other commercial products that have a form of SDK, so that if the user has purchased a license they can use this and then fall back to an OSM solution if no other is available.\par
\ul\par
Web browsing\par
\ulnone\i Implementation\i0\par
There are a couple of ways this could be implemented:\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\fi-360\li720\sl240\slmult1 Mozilla/Gecko (or a stripped down firefox)\par
{\pntext\f2\'B7\tab}IE COM control\par
{\pntext\f2\'B7\tab}Webkit\par
{\pntext\f2\'B7\tab}Chrome\par
{\pntext\f2\'B7\tab}Make our own\par
\pard\sl240\slmult1 Each of these has it's advantages and disadvantages.\par
\par
Gecko is the preferred option due to the fact it is open source, has no care for ActiveX and will have support for location enabled websites. The down side is that in it's current state it takes over an hour to compile.\par
\par
IE is the most simple to use out of these. It would require no compilation as we could be certain it exists in one form or another on the operating system. The trouble is that the Trident rendering engine is absolutely useless, IE is the biggest pain in the internet's arse and mainly, it would further limit the platform to a windows based one.\par
\par
Webkit is another open source rendering engine, utilised in Safari and Chrome. The upside is the available source. The downside is that it is the one I have least experience with. I will have a play with it and see what I can come up with.\par
\par
Chrome would mean all the webkit work was done for us and we would have some nice features like a download manager, tabbing, bookmarking and history recording. Negatives are that it takes longer to compile than Gecko/FF and so far I haven't managed to successfully build it anyway.\par
\par
So that leaves making our own. This is highly doubtful as a choice but it is a choice we have. Advantages are that I get to play with sockets and protocols, disadvantages being it would be almost impossible for us to make an engine that works flawlessly and could compete with Gecko/Webkit without spending the rest of our lives on it.\par
\par
In summary, I will likely try to get Webkit working and compare it to Firefox. If Webkit is more usable and makes more sense then it will be used. It has an advantage over FF already because it doesn't need MozillaBuild in order to build it. No doubt it will have it's own compile quirks though.\par
\par
Another possibility for the web browser, since we can intercept clicked links would be to have special links that lead to parts of the interface or do certain things. Similar to the way MSN links are intercepted so you can have people click them to open a conversation with you, or spotify links can lead to artist/song/playlists in the app.\par
\ul\par
Statistics page\par
\ulnone Is this the OBDII page?\par
\par
\ul Phone pairing/control\par
\ulnone We need some way to pair with a phone, so that we can use the AP for mobile internet access. Furthermore, we need to be able to place phone calls through the phone via the interface, outputting the speech to the car speakers. While we're at it, we may as well let them send and read text messages. There are already bluetooth standards for things like identifying as a headset, as well as object push (possibly a way to get the address book, though I suspect there will be a standard for this as well)\par
\par
\ul Voice control\ulnone\par
This was an integral part of my original car pc spec. Being able to say "Play [some artist/song/album/film/video clip]" and it happens. Then being able to say "Navigate to [street/POI/lat + lon/pre-set named location/city, town or place name]" and that happens as well.\par
\par
I created "E" as a prototype of this. The windows TTS stuff is totally useless unless you have an American accent, plus that old cross platform issue comes up again. I've used Dragon before which is very good, but it's not free and not open source. Sphinx looks like it may do the job but I only briefly scanned it.\ul\par
\par
TTS\par
\ulnone Since the main user of the car pc will be the driver, we need a way to convey information to them in a non distracting way. Without wanting to create HAL, I think it would be nice to have a TTS engine so that alert messages can be said aloud to the driver. It would also allow us to read out street names for the navigation - something very simple but sat nav manufacturers like to charge stupid prices for. The likely provider of this will be the very well known and used Festival TTS engine.\par
\par
\ul Radio\par
\ulnone What is a car without a radio? Some radio interface would be good, especially given how cheap usb/pci/pcmcia digital radio cards are these days. Silabs seems to be the most popular for car pcs.\par
\ul\par
TV\par
\ulnone What is a car without a tv? Safer, that's what. But who cares about safety anyway? Especially since my car only has 1 working seat belt.\par
We could probably write some kind of interface for using tv cards. Maybe we could make a very stripped down MythTV for recording as well.\par
\ul\par
OBDII Reading\par
Live camera screens\par
\ulnone Lots of car pcs have cameras, so we need some way of showing the feed from them. If they have multiple cameras we need a way of handling this.\par
\ul\par
Camera recording with scrolling buffer and touch-save\par
\ulnone If cameras are available, why not use them to record a constant stream, let's say 5 minutes of data on a scrolling buffer. The user should be able to instantly save any given buffer with a single touch. This could help in the event of an accident or just for recording a nice driving session. Perhaps at any point in time the user could say they wish to record x minutes of video, or just set up a continual record. The default should be a small but useful amount though.\par
\ul\par
Nice GPS route factor thingy\par
\ulnone If the OBD sensors can give us the fuel level, when planning a route we could factor in the amount of available fuel and then if there is not enough, bring a petrol station into the planned route. Obviously we would need a threshold, so if they would get there with less than a certain amount it would alert them. We wouldn't the system to allow them to arrive at their destination but with only enough fuel left to get a further few hundred metres.\ul\par
\par
Traffic cam view\par
\ulnone There are about a billion traffic camera sites online. We could integrate an interface for these so that when planning a journey, the user could check the traffic on the roads they are thinking of travelling on.\ul\par
\par
Speed cam alerts\par
\ulnone What every car needs.\ul\par
\par
WiFi hopper\par
\ulnone Some system to scan for wireless networks, join open ones or those we have a key for. I believe windows can actually do this itself though.\par
\ul\par
Fuel prices\par
\ulnone Millions of apis are available for giving local fuel prices. We should provide a nice way for people to check them so they can go to the cheapest.\ul\par
\par
Auto sync with home network \par
\ulnone Automatically sync files in certain folders when arriving at home network. This could be copying new playlists from the home server, new songs or films etc. It could also be uploading GPS track logs or recorded video to the home server though, for safe keeping.\par
\ul\par
ANPR\ulnone\par
Getting a bit ambitious here but it would be nice if a camera could scan number plates and give info about that car if it is someone the user knows or using a database of noteworthy vehicles (unmarked police cars, for a start. They're the bane of my motorway driving).\par
\par
There would be a local database of cars that the user has entered information about. This could be a case where Teario enters Pyroka's details and number plate and then coincidentally pulls up behind him at some traffic lights. The system would read his number plate, find the info and display some sort of contact card with the details in.\par
\par
A similar system could work for service vehicles. This does not necissarily have to be for unmarked cars. Driving behind a marked police car could inform the driver of the cars role (traffic police, dog van, ERV etc) as well as the constabulary responsible for that vehicle. Unmarked cars would work in the same way, allowing the user to ensure they are driving sensibly. I'm not sure what the legal standing is on such a thing (though I can't see there being a problem).\par
\par
A further advantage would be a stolen car database. If a car has been stolen it can be entered into the database (we need some way to verify that fact though. Crime ref or something) and if it then appears in front of you and you're a kind person, the authorities can be notified. It is doubtful they would care or do anything about it but there's a chance at least one car could be recovered by such a mechanism.\par
\par
Finally, ordinary people could add themselves to a database. I could place myself in there as a Fossil developer and then a user could tell when they come up near me. Get a little social networking into your driving day.\par
\par
\ul Deceleration checks\ulnone\par
Utilising an accelerometer (or less accurately but still possible with a GPS) and a range finder, we could measure the distance to a car in front and current rate of deceleration to determine if the stopping distance is adequate. If it is not, an alert could be relayed to the driver that they need to brake harder or change lanes as they will be unable to stop in time.\par
\par
Using only a range finder, the same could be worked out for cars behind. If they are unable to stop in time and a rear-end collision is imminent, perhaps alerting the driver would allow them to manouver out of the way or brace themselves to reduce likelihood of whiplash. Although naturally everyone involved in the accident will claim they have whiplash anyway.\par
\par
\ul Side scan\par
\ulnone A laser scan of the side of a vehicle would allow the driver to be notified of the window they have in order to change lane. Especially in my car, which has no rear windows, checking the left blind spot is quite difficult. A scanner here that could just tell me a car is in the blind spot would be very ideal. Taking it further, if there were two scanners - front and rear angled about 45 degrees to the car then it could work out the time window of a lane change and notify the driver if it is safe or unsafe to do so.\par
\par
\ul Speed awareness\ulnone\par
We should have some mechanism to alert the driver when they go over the speed limit. Not something intrusive, a simple click or short beep will do. What would be good though is if we took the weather into account when determining what the speed limit is, rather than just the hard limit for that road. As an example, the stopping distance in rain is 4 times the distance for dry weather. Therefore the driver should be alerted when they go over a safe speed (probably 2/3 of the limit) rather than just the limit for that road.\par
\par
In heavy fog or ice, where it is difficult to see or the stopping distance is greatly extended (is it 10 times more for ice?) Then the alert should be at an even lower speed.\par
\par
\ul Light sensor interface\ulnone\par
Given that I like to interface with as many things as I possibly can, a light sensor reader would be nice, if available to the computer. This would be able to alert the driver that it has gone dark to such a level that they should put their side lights on, or their headlights if it has gone even darker. Similarly in the mornings when the light is getting brigter, a safe time to switch off the headlights could be used to notify the driver.\par
\par
\ul Some nice extras\ulnone\par
I'd like a side-mounted camera to snap photos as I overtake. Some people have really funny driving positions. Snapping lane hoggers as they are undertaken would be nice too.\par
\par
\pard\sl240\slmult1\qc\fs28\par
\cf1\fs24 Note: We need a better way to organise this part\par
Additional Note: This list was mainly ripped straight from \cf0{\field{\*\fldinst{HYPERLINK "http://www.mp3car.com/vbulletin/software-software-development/34218-list-front-ends-other-useful-apps.html"}}{\fldrslt{\ul\cf2 http://www.mp3car.com/vbulletin/software-software-development/34218-list-front-ends-other-useful-apps.html}}}\f0\fs24\par
\fs28 What do other front-ends have?\par
\pard\sl240\slmult1\fs24 I will place here a feature list of other front ends. That way we can see what they have thought off that we missed out and steal their ideas.\par
\par
\pard\sl240\slmult1\qc\ul Centrafuse\par
\cf3\ulnone\i Closed Source, Commercial, Active Development\cf0\ul\i0\par
\ulnone\fs28{\field{\*\fldinst{HYPERLINK "http://www.fluxmedia.net"}}{\fldrslt{\ul\cf2 http://www.fluxmedia.net}}}\ul\f0\fs24\par
\pard\sl240\slmult1\ulnone Centrafuse is a well known front end that is built in .NET. As a result it is only able to run on the Windows platform (though I suspect Mono may be a possibility for running on another OS). It utilises DirectX for the interface, however it does that via a .NET control as well. Lots of things tying this one to Windows.\par
\par
As far as I can tell it seems it used to be free and then went commercial. A demo is available for 30 days but I only managed to play with it for a few hours, then I changed my date (to avoid Windows 7 2 hour shutdown) and now it won't work (even with the date fixed).\par
\par
I'll see what I can get working, if anything on my linux box at some point. That should let us know which parts it relies on the operating system for.\ul\par
\par
\ulnone\b\i Interface\b0\par
\i0 Interface consists of a set of buttons on the main screen. There are left/right scroll arrows to change the options, each page can show a maximum of 6 buttons (excluding left/right arrows).\par
The music track being listened to is always displayed at the top of the page and the control buttons (pause/play, next/prev, volume etc) are always visible at the bottom of the screen.\par
Every screen has a home button to go straight to the main menu, a volume slider and a brightness toggle.\ul\par
\ulnone\b\i Playlist\b0\par
\i0 Playlist has album art in a list view. It is a separate button on the main screen to the audio/video sections. I'm not really sure why.\i\par
\b Music\par
Video\ul\i0\par
\ulnone\i GPS Navigation\b0\i0\par
The navigation for Centrafuse seems to be an in-house routing engine (most likely A* or similar) and NavTeq maps. NavTeq don't offer free maps.\par
\b\i Radio\par
Phone\par
XM Radio\b0\par
\i0 I don't see why this didn't just come under the radio category\i\par
\b iPod\par
Pictures\par
DVD\b0\par
\i0 I don't see why this didn't come under the video category\i\par
\b Web\b0\par
\i0 Uses internet explorer via COM control\i\par
\b Email\par
Weather\b0\par
\i0 This is taken directly from weather.com\i\par
\b Mixer\par
WiFi\b0\par
\i0 I suspect this is using Windows to get the available device list.\i\par
\b OBDII\par
Cam\par
Tools\par
Equaliser\par
TTS\par
Voice Control\par
Plugins\b0\i0\par
\ul\par
\pard\sl240\slmult1\qc Media Engine\par
\cf3\ulnone\i Closed Source, Free, Active Development\cf0\ul\i0\par
\ulnone{\field{\*\fldinst{HYPERLINK "http://mediaengine.org"}}{\fldrslt{\ul\cf2 http://mediaengine.org}}}\ul\f0\fs24\par
\par
\pard\sl240\slmult1\ulnone I've been unable to get this to run, however on installing I did notice it had VB runtime libraries as a dependancy. I filled the following in judging by the screenshot and skin images on the website.\par
\par
\b Audio\par
\par
Video\par
\par
Radio\par
\par
Playlist\par
\b0 Once again I don't see why this is a separate category and not just integrated into the audio section\b\par
External App Launch\ul\b0\par
\pard\sl240\slmult1\qc\par
FrodoPlayer\par
\cf3\ulnone\i Closed Source, Free, Active Development\cf0\ul\i0\par
\ulnone{\field{\*\fldinst{HYPERLINK "http://www.licausi.com/frodoplayer/"}}{\fldrslt{\ul\cf2 http://www.licausi.com/frodoplayer/}}}\ul\f0\fs24\par
\par
\ulnone Not sure what this is programmed in. Lots of errors trying to run it.\ul\par
\par
\pard\sl240\slmult1\ulnone\b Interface\par
\b0 The music player is the main interface here. The textures are really quite terrible. The timer on the menu display is annoying. The smoking gibbon is amusing.\b\par
DVD\par
External Apps\par
Playlist\par
\b0 WHY IS THIS A NEW CATEGORY?\b\par
Radio\par
XM Radio\par
\b0 WHY IS THIS NOT PART OF THE RADIO CATEGORY?\ul\par
\pard\sl240\slmult1\qc\par
AutoTouch\par
\cf3\ulnone\i Open Source (minus sat nav source), Free, Active Development\par
\i0 Gps uses map point. Very basic front end.\par
\par
\cf0\ul StreetDeck\par
\cf3\ulnone Active dev\cf0\ul\par
Mobile Impact\par
\cf3\ulnone Active dev\cf0\ul\par
RoadRunner\par
\cf3\ulnone Active dev, free, open source\cf0\ul\par
PyCar\par
\cf3\ulnone Guess this one is coded in python. Free, Active dev\par
\cf0\ul\par
MediaCar\par
\cf3\ulnone\i Closed Source, Free, No Development\cf0\ul\i0\par
\ulnone{\field{\*\fldinst{HYPERLINK "http://www.media-car.fr.st/"}}{\fldrslt{\ul\cf2 http://www.media-car.fr.st/}}}\ul\f0\fs24\par
\par
\pard\sl240\slmult1\ulnone This interface has a lot of issues. I get tons of errors whenever I try to get it to do anything. It seems to be more of a launcher for external apps with a few integrated features than anything standalone. It is possible to tell it which apps you want to associate with certain actions and can integrate destinator or map point. Video defaults to powerDVD. As far as I can tell, the site is also distributing a debug build, which is not going to be doing the memory consumption any favours. Had a quick check and it seems to be using 10-12k of RAM, way more than something like this should.\ul\par
\pard\sl240\slmult1\qc\par
\pard\sl240\slmult1\ulnone\b Interface\par
\b0 Interfaces are skinnable, though the extent of this is currently unknown. Seems most stick to a single screen with some background image and buttons. Has a button for launching apps so not sure if this is acting like an all-in-one solution or just a sort of explorer replacement.. running inside explorer.\par
\par
I'm not sure what they are using for the interface but looking at the debug output and the functionality I suspect it may be a windows form control with a picturebox or imagebutton.\par
\par
\b Audio\par
\b0 Think this uses Winamp but can be set to others\b\par
Video\par
\b0 Think it uses PowerDVD or similar but is configurable\b\par
GPS Navigation\par
\b0 Uses Microsoft Map Point or Destinator for navigation, which are both commercial products. Also has option to change to external app but then it won't be properly integrated.\par
\pard\sl240\slmult1\qc\ul\par
A.I.M.E.E\par
\cf3\ulnone This will never see the light of day. Free, closed source, no dev\par
\cf0\ul\par
CarBox\par
\cf3\ulnone No dev\par
\cf0\ul\par
HeadUnit\par
\cf3\ulnone No dev\cf0\ul\par
C.E.S\par
\cf3\ulnone No dev\cf0\ul\par
X-Lobby\par
\cf3\ulnone No dev\cf0\ul\par
In-car Terminal\par
\cf3\ulnone No dev\cf0\ul\par
DashPC\par
\cf3\ulnone No dev\cf0\ul\par
C.N.S Maestro\par
\cf3\ulnone No dev\cf0\ul\par
Sophie\par
\cf3\ulnone No dev\cf0\ul\par
ESXManager\par
\cf3\ulnone No dev\cf0\ul\par
CCCarProject (Mac frontend)\par
\cf3\ulnone No dev\cf0\ul\par
iMobile\par
\cf3\ulnone No dev\cf0\ul\par
CarX\par
\cf3\ulnone No dev\cf0\ul\par
Meedio\par
\cf3\ulnone No dev\cf0\ul\par
SnapStream Beyond Media\par
\cf3\ulnone No dev\cf0\ul\par
XM MCE 2005\par
\cf3\ulnone No dev\cf0\ul\par
Silverwolf (Linux frontend)\par
\cf3\ulnone No dev\cf0\ul\par
DigitalDash\par
\cf3\ulnone No dev\cf0\ul\par
CarX For Audi (Audi frontend)\par
\cf3\ulnone No dev\cf0\ul\par
CarPCOS\par
\cf3\ulnone No dev\cf0\ul\par
MediaPortal\par
\cf3\ulnone No dev\cf0\ul\par
Freeway\par
\cf3\ulnone No dev\cf0\ul\par
Velocity\par
\cf3\ulnone No dev? Flash, source possibly obtainable\cf0\ul\par
Plastico\par
\cf3\ulnone No dev\cf0\ul\par
nGhost (Linux frontend)\par
\cf3\ulnone No dev\cf0\ul\par
Evil Car PC\par
\cf3\ulnone No dev\cf0\ul\par
G-Net\par
\cf3\ulnone No dev\cf0\par
\pard\sl240\slmult1\par
\par
\par
\par
\par
\par
\pard\sl240\slmult1\qc\fs28 Finalised features\par
\pard\sl240\slmult1\fs24 Version 1.0\par
\ul Interface\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\fi-360\li720\sl240\slmult1\ulnone OpenGL\par
{\pntext\f2\'B7\tab}Flocking\par
\pard\sl240\slmult1\par
\ul GPS Navigation\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\fi-360\li720\sl240\slmult1\ulnone Find a non-OSM FOSS Sat Nav\ul\par
\ulnone{\pntext\f2\'B7\tab}POIs\ul\par
\pard\sl240\slmult1\par
Audio & Video\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\fi-360\li720\sl240\slmult1\ulnone Get libVLC to work\par
{\pntext\f2\'B7\tab}Playlists\par
{\pntext\f2\'B7\tab}Scrobbler\ul\par
\pard\sl240\slmult1\par
Web browser\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\fi-360\li720\sl240\slmult1\ulnone FF/Webkit\par
{\pntext\f2\'B7\tab}Bookmarks\par
{\pntext\f2\'B7\tab}History\par
{\pntext\f2\'B7\tab}Search bar\ul\par
\pard\sl240\slmult1\par
Stats screen\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\fi-360\li720\sl240\slmult1\ulnone Mileage display\f1\par
\pard\sl240\slmult1\fs22\par
}
 